LDPC coding process with incremental redundancy

ABSTRACT

The invention relates to a coding method with incremental redundancy in which it is determined ( 620 ) whether to carry out the coding of a sequence of information symbols using a first code (C), of the LDPC type, defined by a first check matrix, H, or rather using a second code ({tilde over (C)}), of lesser efficiency than that of the first code, the second code being defined by a second check matrix, {tilde over (H)}, obtained by fractionation ( 630 ) of the rows of the first check matrix. The invention finds application to, among others, a link adaptation method, a turbo-coding method, a distributed coding method within a cooperative network, a packet transmission method using an IR-HARQ protocol.

TECHNICAL FIELD

The present invention relates to the field of binary or non-binary LDPC (Low Density Parity Check) codes. It also relates to error-correcting codes or ECC with incremental redundancy.

The present invention can be applied to many fields, such as Link Adaptation type telecommunication systems, turbo-coding, distributed coding within a cooperative network, systems using the HARQ (Hybrid Automatic Repeat reQuest) communication protocol.

PRIOR STATE OF THE ART

LDPC codes were introduced by R. Gallager in his paper entitled “Low density parity check codes” published in IEEE Trans. Inform. Theory, Vol. IT-8, pages 21-28, 1962, and their interesting properties were only recently rediscovered when the power of iterative decoding was highlighted in turbo-codes.

LDPC codes are especially attractive in that they not only allow attainment of a correction capability approaching the Shannon limit, but also offer the best possible compromise between efficiency and performance (near the Gilbert-Varsharmov bound).

It is known that LDPC codes are linear codes with the property of having parity control matrices (called more simply “control matrices”) with a low density of nonzero elements. Recall that a linear code C is defined by its generating matrix G or dually by its parity matrix H with HG^(T)=0. X is a word in code C if and only if HX^(T)=0.

LDPC codes are amenable to representation by a bipartite graph. A bipartite graph, so called, is an undirected graph whose vertex set consists of two disjoint subsets such that no two vertices of the same subset are connected by an edge of the graph.

The bipartite graph associated with an LDPC code is partitioned into a first subset of vertices associated with the symbols constituting a code word, called variable vertices, and a second subset of vertices associated with code constraints, typically the parity checks, called check vertices. A bipartite graph associated with a group of constraints is also called a Tanner graph. More specifically, variable vertices correspond to the columns and check vertices to the rows of the check matrix. Thus, a check vertex is connected to a variable vertex by an edge of the graph if, and only if the corresponding coefficient of the check matrix is nonzero, in other words the incidence matrix of the graph corresponds to the check matrix of the code. Equivalently, the variable vertices represent code bits (or symbols if the code is non-binary), and the check vertices represent linear checks, also called parity constraints, of the code.

Shown in FIG. 1 is the bipartite graph of a binary code defined by a check matrix H. It is noted that the graph includes six variable vertices, X₁, . . . , X₆, representing the six bits of the code, and three check vertices, Y₁, . . . , Y₃ representing the three parity constraints that apply to these six bits.

LDPC codes can be decoded by means of a message-passing iterative decoding method, also called MP (for Message Passing) or BP (Belief Propagation) type. A generic description of this decoding method can be found in N. Wiberg's thesis entitled “Codes and decoding on general graphs,” 1996. Iterative message-passing decoding is in fact a generalization of algorithms well known in the field of decoding, to with the “forward-backward” algorithm used for turbo-codes and the Gallager algorithm used for LDPC codes. The message transmitted by a variable vertex to a check vertex represents the “belief” of the variable vertex regarding the value of value of the corresponding coded bit (or coded symbol, when a non-binary code is involved). Conversely, the message transmitted by a check vertex to a variable vertex represents the “belief” of the check vertex regarding the value of the coded bit (or coded symbol, when a non-binary code is involved) corresponding to the receiving variable vertex. In practice, these messages are defined in terms of probabilities, or of logarithmic likelihood ratios (LLR).

Many LDPC code decoding algorithms have been proposed within the state of the art. They differ either in the nature of the messages exchanged (probabilities, LLR), or in the manner in which they are calculated, or by the binary or non-binary nature of the code. One can mention non-exhaustively the “Sum-Product,” “Min-Sum,” “Min-Max,” “Erasure Decoding,” etc. decoding algorithms. For example, a “Min-Max” type decoding method was described by V. Savin in the article “Min-Max decoding for non-binary LDPC codes,” published in the IEEE Symposium on Information Theory (ISIT), Toronto, Canada 2008.

The low density of nonzero elements in an LDPC code's check matrix is manifested by a low density of short cycles within the bipartite graph. These cycles tend to cause self-confirmation of the variables and the checks in an iterative decoding process. This means that an erroneous value of a vertex can be confirmed due to the simple fact that the messages transmitted to it by its neighbours are themselves dependent on the messages that this vertex transmits to them. To combat this self-confirmation phenomenon, the decoding process must adhere to the so-called extrinsic information principle: a message transmitted by a sending vertex to a receiving vertex is calculated from all the messages received by the sending vertex except that coming from the receiving vertex. However, adhesion to the extrinsic information principle does not exclude self-confirmation at higher orders, due to the cycles present in the bipartite graph, these self-confirmations being more frequent with shorter cycles.

Incremental redundancy error correction coding is also known in the state of the art. Such coding makes it possible to vary the degree of redundancy and hence the code throughput at will. The code's throughput (or efficiency) means the ratio of the number of bits (or symbols) of information to the number of bits (or symbols) of code. Thus, in the case of a systematic binary code, if i is the number of bits of information and if p is the number of parity bits, the code's throughput is

$R = {\frac{i}{i + p}.}$

A first known means of varying the throughput of a code is to truncate it at a greater or lesser rate of truncation. For example, if (I,P) is a systematic code where/represents the information bits and P the parity bits, the truncation of the parity bits at different rates makes it possible to incrementally vary the redundancy of the code.

A second known means of making an incrementally redundant code is to concatenate a variable number of elementary codes, also called code components, either serially or in parallel.

FIG. 2 illustrates an example of incremental coding in which the number of parallel components can be varied. More specifically, a turbo-code is represented here where/is the systematic part and where P₁, P₂, P₃, represent the parity bits supplied respectively by a first, a second and a third recursive systematic coder designated by RSC₁, RSC₂ and RSC₃. The information bits are interleaved by a first interleaver Π₁ at the input of the second systematic recursive coder RSC₁, then by a second systematic recursive interleaver Π₂ at the input of the third systematic recursive coder RSC₂.

The bits constituting parts I, P₁,P₂,P₃ are for example then supplied to a binary-to-symbol modulator. As represented symbolically by switches sw₁, sw₂, sw₃, it is possible to select the various components of the turbo-code, to transmit or not the parity bits P₂ for example.

Another example of incremental redundancy coding can be illustrated in the context of a cooperative network. Recall that a cooperative network is a network in which information transmitted by a source terminal s to a destination terminal d can be relayed by one (or more) relay terminal(s). Different cooperation strategies have been considered in the literature, in particular according to the type of information relayed by the terminal and the type of multiplexing between the information relayed and the information belonging to the relay terminal.

We have shown in FIG. 3 an example of a cooperation strategy of the “decode and forward” type within a cooperative network, as proposed in the article of B. Zhao et al. entitled “Distributed turbo coded diversity for the relay channel,” published in IEEE Electronics Letters, vol. 39, pages 786-787, May 2003.

The source terminal s transmits information bits I, using a first systematic code C₁=(I,P₁), to the destination terminal d, or in other words the code word (I,P₁) where P₁ represents parity bits of the code. The relay terminal r also receives (I,P₁), via the s-r Communication channel. Terminal r decodes the data received to recover the information bits I, and interleaves these information bits. The information thus interleaved, Ĩ, is encoded using a second systematic code C₂=(Ĩ,P₂). Parity bits P₂ are then transmitted to the recipient d.

It is understood that codes C₁ and C₂ constitute a parallel turbo-code (I,P₁,P₂), distributed between the source terminal and the relay terminal. The destination terminal can then decode the data received by using an iterative decoding algorithm (turbo-decoding method).

Finally, incremental redundancy coding also finds application in mobile telecommunication systems of the HARQ (Hybrid Automatic Repeat reQuest) type, also called IR-HARQ (Incremental Redundancy HARQ) for that reason. In such a system, a information bit packet/is encoded using an error-correction code. During the first transmission of the packet over the channel, only certain parity bits, P₁, obtained for example by truncating the code, are transmitted with the information bits. If the recipient can not correct the errors in the packet using P₁, a retransmission request is sent to the sender. It may, depending on the type of implementation, send new parity bits or even all the remaining bits, P₂. The receiver then corrects the errors in the packet using the bits P₁ received in the first transmission and bits P₂ received in the second transmission. This process of retransmission can be iterated until all the code's parity have been transmitted. It is understood that P₁, P₂, . . . constitute redundancy increments of the code which are only sent one step at a time over the transmission channel, to the extent that they are needed for the correct reception of the packet.

Recently, an incremental redundancy coding method using LDPC codes was proposed in the article by P. Razaghi et al. entitled “Bilayer low-density parity check codes for decode-and-forward,” published in IEEE Trans. on Information Theory, October 2007. More specifically, this coding method uses two LDPC codes C₁ and C₂, defined by two parity matrices H₁ and H₂, as illustrated in FIG. 4A. Code C₁ enables the generation of a sequence of parity bits P₁ from a sequence of information bits I₁. Code C₂ enables the generation of a sequence of parity bits P₂ from a sequence of information bits I₂. It is noted that the length of I₂ is equal to the sum of the lengths of I₁ and P₁.

In a cooperative network of the type illustrated in FIG. 3, the source terminal s encodes the information bits packet I using code C₁ and generates a sequence of parity bits, P₁. The source terminal then sends (I,P₁) to the relay terminal r and the destination terminal d. The relay terminal r decodes the data received using code C₁ while correcting any transmission errors that might affect I and P₁. The relay terminal then encodes (I,P₁) using code C₂ and transmits a packet of parity bits P₂ to the destination terminal d. The destination terminal consequently receives (I,P₁) from the source terminal and P₂ from the relay terminal. It then decodes the packet (I,P₁,P₂) using a new code C, with parity matrix H, obtained by concatenation of matrices H₁ and H₂, as illustrated in FIG. 4B.

Similarly, within an IR-HARQ type telecommunication system, a source terminal can encode a packet of information bits I using code C₁, thus generating a sequence of parity bits P₁. The source terminal sends the packet (I,P₁) to the destination terminal. The destination terminal decodes the data received using code C₁, and thus correct any transmission errors that might affect I and P₁.

If the decoding is successful, the recipient recovers correctly the packet of information bits I, and the source terminal can continue with transmitting the next information packet. If the decoding fails, however, the destination terminal sends a retransmission request to the source terminal. It encodes the packet (I,P₁) using code C₂ in FIG. 4 and transmits the new sequence of parity bits P₂ obtained from I and P₁. The destination terminal then decodes the packet (I,P₁,P₂) using the concatenated code C, with parity matrix H, as before.

Concatenated LDPC code C has a lower efficiency (or throughput) than either of the constitutive elementary codes C₁ and C₂. In fact, if R₁ is the efficiency of code C₁ and R₂ is the efficiency of code C₂, the efficiency of concatenated code C is R₁R₂. Correlatively, the correction power of code C is greater than that of either of the elementary codes C₁ and C₂.

The correction capability of an LDPC code is however very dependent on the density of nonzero elements in its check matrix. Thus, the weaker the efficiency of an LDPC code, the more its check matrix must be depleted. In other words, when placed at the same distance with respect to Shannon's theoretical limit, a low efficiency LDPC code must be less dense than a higher-efficiency LDPC code.

The construction of incremental redundancy LDPC codes, as proposed in the state of the art, leads to parity matrices having too high a density of nonzero elements.

Thus, the concatenation of LDPC codes as described in the aforementioned article, leads to a parity matrix H that is too dense due to the fact that the density of each of the elementary matrices H₁ and H₂ is greater than that of the parity matrix of a “good” LDPC code with efficiency R₁R₂. In addition, as seen in FIG. 4, this density is not homogeneous, but is generally greater in matrix H₁ than in the rest of the matrix. Thus, matrix H inherits all the cycles of matrix H₁, though these could have been avoided if a “native” LDPC code with efficiency R₁R₂ had been used. The existence of these cycles in matrix H leads to a deterioration in performance.

Contrarily, truncation of an LDPC code makes it possible to construct from an LDPC code of efficiency R a truncated LDPC code with efficiency R₁>R, but the performance of the truncated code is degraded due to the presence in the associated graph of vertices that receive no information from the communication channel.

The problem at the root of the invention is to propose an LDPC coding method with incremental redundancy using an LDPC code yet not having the aforementioned disadvantages, that is to say implementing check matrices with low density and without short cycles.

DISCLOSURE OF THE INVENTION

The present invention is defined by a coding method with incremental redundancy in which it is determined whether to carry out encoding of a sequence of information symbols using a first, LDPC type code, defined by a first check matrix, H, or using a second code, with lower efficiency than that of the first code, in which:

-   -   the second code is defined by a second check matrix, {tilde over         (H)}, obtained from the first check matrix by fractionating at         least one parity check represented by one row of H into a         plurality of partial parity checks applying to symbols of the         first code and at least one additional symbol, by adding to the         matrix H at least one new column representing said additional         symbol and substituting for said row new rows representing         respectively the partial parity checks;     -   said sequence of information symbols is encoded using the first         code or the second code, depending on the result of the         determination.

The encoding of said sequence of information symbols is carried out using the first code to obtain a first code word X and the encoding of the same sequence using the second code is carried out by finding code word {tilde over (X)} satisfying {tilde over (H)}{tilde over (X)}=0 and {tilde over (X)}|_(E)=X where {tilde over (X)}|_(E) represents the restriction of {tilde over (X)} to columns present in H.

According to a first variant, the coding method provides all the symbols of the code word obtained by encoding said sequence of information symbols using the second code.

According to a second variant, the coding method provides all the symbols of said information sequence and the additional symbol(s) corresponding to the column(s) in the second check matrix which is (are) not present in the first check matrix.

According to a third variant, it provides only the additional symbol(s) corresponding to the column(s) of the second check matrix which is (are) not present in the first check matrix.

The number of fractionated rows can be selected according to the state of the communication channel over which the sequence of information symbols is to be transmitted.

The rows can also be fractionated with the same degree of fractionation and this degree of fractionation can be selected in relation to a state of the communication channel on which the sequence of information symbols is to be transmitted.

The invention also relates to a link adaptation method of communication between a source terminal and a destination terminal, a packet of information symbols being transmitted over said link by the source terminal using a first modulation and encoding scheme using a first LDPC type code, defined by a first check matrix H and, if the quality of the link is poor, using a second modulation and encoding scheme defined by a second check matrix {tilde over (H)}. The second check matrix is obtained by fractionating at least one parity check represented by a row of matrix H into a plurality of partial parity checks applying to code symbols of the first code and at least one additional symbol, by adding to matrix H at least one column representing said additional symbol and by substituting for said row new rows respectively representing these partial parity checks.

Said packet of information symbols can be encoded using the first code to obtain a first code word X and encoding the same packet using a second code ({tilde over (C)}) by finding the code word {tilde over (X)} satisfying {tilde over (H)}{tilde over (X)}=0 and {tilde over (X)}|_(E)=X where X|_(E) represents the restriction of {tilde over (X)} to columns present in H.

The invention further relates to a method for turbo-coding a packet of information symbols in which said packet is supplied in systematic form in one branch of the turbo-code, said packet is encoded using a first LDPC type systematic code defined by a first check matrix H. The parity symbols of the packet thus encoded are provided in a second branch of the turbo-code and said packet is encoded, after being interleaved, using a second code, defined by a second check matrix {tilde over (H)}. The parity symbols of the packet thus encoded are supplied in a third branch of the turbo-code. Said second check matrix is obtained by fractionating at least one parity check represented by a row of matrix H into a plurality of partial parity checks applying to symbols of the first code and at least one additional symbol, by adding to this matrix at least one new column representing said additional bit, and by substituting for said row new rows respectively representing these partial parity checks.

The invention further relates to a method for transmitting packets within a cooperative type communication including a source terminal, a destination terminal and at least one relay terminal, in which:

-   -   the source terminal encodes a packet of information symbols, I,         using a first code, C, of the LDPC type and with check matrix H,         and transmits the packet thus encoded to the relay terminal as         well as to the destination terminal;     -   the relay terminal decodes the data received to recover said         packet and encodes the recovered packet using a second code         defined by a check matrix {tilde over (H)}, said matrix {tilde         over (H)} being obtained by fractionating at least one parity         check represented by a row of matrix H into a plurality of         partial parity checks applying to symbols of the first code and         at least one additional symbol, by adding to this matrix at         least one column representing said additional symbol and by         substituting for said row new rows respectively representing         these partial parity checks;     -   the relay terminal transmits to the destination terminal at         least the additional symbols corresponding to the columns of the         second check matrix which are not present in the first check         matrix.

According to a variant, the relay terminal transmits all the symbols of the packet encoded using the second code.

The relay terminal can in addition transmit to the destination terminal said recovered packet.

The number of fractionate rows and/or their degree of fractionation can depend on the state of the communication channel between the relay terminal and the destination terminal and/or the state of the communication channel between the source and the recipient.

The invention also relates to a method for transmitting packets within a cooperative type communication network including a source terminal, a destination terminal and a plurality of relay terminals, in which:

-   -   the source terminal encodes a packet of information symbols, I,         using a first code, C, of the LDPC type and with check matrix H,         and transmits the packet thus encoded to the relay terminals as         well as to the destination terminal;     -   every relay terminal decodes the received data to recover said         packet and encodes the recovered packet using a second code         defined by a check matrix {tilde over (H)}, said matrix {tilde         over (H)} being obtained from H by fractionating at least one         parity check represented by a row of matrix H into a plurality         of partial parity checks on symbols of the first code and a set         of additional symbols, by adding to matrix H a plurality of         columns representing this set of additional symbols and by         substituting for said row new rows respectively representing         these partial parity checks;     -   every relay terminal transmits to the destination terminal a         subset of the additional symbols corresponding to the columns of         the second check matrix that are not present in the first check         matrix, the subsets from two separate relays being disjoint.

The sizes of the various subsets can be determined centrally by the source terminal.

According to one advantageous variation, the recombination of said subsets constitutes said set of additional symbols and the size of said set is determined by the source terminal.

The invention also relates to a method for transmitting a packet of information bits within a telecommunication system using and IR-HARQ protocol in which a source terminal transmits, in a first step, said coded packet to a destination terminal using a first code of the LDPC type, defined by a first check matrix H, in which, at the request of the destination terminal, the source terminal:

-   -   encodes said packet of information bits using the second code         defined by a second check matrix obtained by fractionating at         least one parity check represented by a row of matrix H into a         plurality of partial parity checks applying to bits of the first         code and at least one additional bit, by adding to the matrix H         at least one column representing said additional bit, and         additional rows respectively representing these partial parity         checks;     -   transmits in a second step to the destination terminal the         additional bits corresponding to the columns of the second check         matrix which are not present in the first check matrix.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows an example of a bipartite graph associated with a binary LDPC code;

FIG. 2 shows schematically an example of turbo-coding with incremental redundancy;

FIG. 3 shows schematically an example of transmission within a cooperative network;

FIGS. 4A and 4B schematically show check matrices used for a coding method using concatenated LDPC codes;

FIGS. 5A and 5B respectively show an example of a code's check matrix and a matrix obtained by fractionating it;

FIG. 6 shows schematically a coding method with incremental redundancy according to one embodiment of the invention;

FIG. 7 shows schematically an adaptive turbo-coding process using an incremental redundancy coding method according to one embodiment of the invention;

FIG. 8 shows schematically a cooperative transmission system using an incremental redundancy coding method according to one embodiment of the invention.

DETAILED DISCLOSURE OF SPECIFIC EMBODIMENTS

In what follows, we consider a binary or non-binary LDPC code with check matrix H.

For the purpose of facilitating understanding of the invention, the construction of an LDPC with incremental redundancy will first of all be illustrated by a specific case.

Let the code C be defined by the check matrix H:

$\begin{matrix} \overset{i_{1\;}\mspace{20mu} i_{2}\mspace{31mu} i_{3}\mspace{31mu} i_{4}\mspace{31mu} i_{5}\mspace{20mu} i_{6}\mspace{25mu} i_{7}\mspace{14mu} i_{8}\mspace{25mu} p_{1}\mspace{20mu} p_{2}\mspace{20mu} p_{3\;}\mspace{14mu} p_{4}\mspace{20mu} p_{5\mspace{14mu}}\; p_{6\mspace{14mu}}\; p_{7\mspace{20mu}}p_{8}}{\begin{matrix} 1 & \; & 1 & 1 & \; & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & \mspace{11mu} \\ \; & 1 & \; & 1 & \; & 1 & \; & 1 & 1 & 1 & \; & \; & \; & \; & \; & \mspace{11mu} \\ 1 & 1 & \; & \; & 1 & \; & \; & 1 & \; & 1 & 1 & \; & \; & \; & \; & \; \\ \; & \; & 1 & \; & 1 & 1 & 1 & \; & \; & \; & 1 & 1 & \; & \; & \; & \; \\ \; & 1 & \; & \; & 1 & 1 & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; \\ 1 & 1 & \; & 1 & \; & \; & \; & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; \\ 1 & \; & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; \\ \; & \; & 1 & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 \end{matrix}} & (1) \end{matrix}$

in which a vertical line has been used to distinguish the left portion relating to information bits and the right portion relating to parity bits. More specifically, the first eight columns of the matrix correspond to the eight bits of the information sequence I=(i₁, i₂, . . . , i₈) and the last eight columns correspond to the eight bits of the parity sequence P=(p₁,p₂, . . . , p₈. The empty cells in the matrix (1) correspond to zero values. The other elements define parity equations satisfied by the sixteen bits of the code word c=(I,P₁). Thus the first row of matrix H expresses the constraint:

i ₁ +i ₃ +i ₄ +i ₇ +p ₁=0  (2)

And similarly, the second line expresses the constraint:

i ₂ +i ₄ +i ₆ +i ₈ +p ₁ +p ₂=0  (3)

A new check matrix, denoted {tilde over (H)}, is constructed by “fractionating” the parity checks of matrix H. In this example, each parity check (that is each row of H) is split to give two rows of {tilde over (H)}. It will of course be understood that a row of a check matrix H can be split so as to generate several rows of {tilde over (H)}.

The process is begun by splitting the parity check associated with the first row of H. To do this, two nonzero elements of the first row, corresponding here to information bits i₃ and i₄, are moved to a new row:

$\begin{matrix} \overset{\; {i_{1\;}\mspace{20mu} i_{2}\mspace{31mu} i_{3}\mspace{31mu} i_{4}\mspace{31mu} i_{5}\mspace{20mu} i_{6}\mspace{25mu} i_{7}\mspace{14mu} i_{8}\mspace{25mu} p_{1}\mspace{20mu} p_{2}\mspace{20mu} p_{3\;}\mspace{14mu} p_{4}\mspace{20mu} p_{5\mspace{14mu}}\; p_{6\mspace{14mu}}\; p_{7\mspace{20mu}}p_{8}}}{\begin{matrix} 1 & \; & \; & \; & \; & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & \mspace{11mu} \\ \; & 1 & \; & 1 & \; & 1 & \; & 1 & 1 & 1 & \; & \; & \; & \; & \; & \mspace{11mu} \\ 1 & 1 & \; & \; & 1 & \; & \; & 1 & \; & 1 & 1 & \; & \; & \; & \; & \; \\ \; & \; & 1 & \; & 1 & 1 & 1 & \; & \; & \; & 1 & 1 & \; & \; & \; & \; \\ \; & 1 & \; & \; & 1 & 1 & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; \\ 1 & 1 & \; & 1 & \; & \; & \; & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; \\ 1 & \; & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; \\ \; & \; & 1 & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 \end{matrix}} & (4) \end{matrix}$

A matrix augmented by an additional row is then obtained:

$\begin{matrix} \overset{i_{1\;}\mspace{20mu} i_{2}\mspace{31mu} i_{3}\mspace{31mu} i_{4}\mspace{31mu} i_{5}\mspace{20mu} i_{6}\mspace{25mu} i_{7}\mspace{14mu} i_{8}\mspace{25mu} p_{1}\mspace{20mu} p_{2}\mspace{20mu} p_{3\;}\mspace{14mu} p_{4}\mspace{20mu} p_{5\mspace{14mu}}\; p_{6\mspace{14mu}}\; p_{7\mspace{20mu}}p_{8}}{\begin{matrix} 1 & \; & \; & \; & \; & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & \; \\ \; & 1 & \mspace{11mu} & 1 & \; & 1 & \; & 1 & 1 & 1 & \; & \; & \; & \; & \; & \; \\ 1 & 1 & \; & \; & 1 & \; & \; & 1 & \; & 1 & 1 & \; & \; & \; & \; & \; \\ \; & \; & 1 & \; & 1 & 1 & 1 & \; & \; & \; & 1 & 1 & \; & \; & \; & \; \\ \; & 1 & \; & \; & 1 & 1 & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; \\ 1 & 1 & \; & 1 & \; & \; & \; & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; \\ 1 & \; & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; \\ \; & \; & 1 & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; \end{matrix}} & (5) \end{matrix}$

The parity check expressed by (2) can be equivalently rewritten:

i ₁ +i ₇ +p ₁ =q ₁

i ₃ +i ₄ =q ₁  (6)

by introducing a new parity bit q₁. In other words, the parity check (2) is now split into two “partial” parity checks:

i ₁ +i ₇ +p ₁ +q ₁=0  (7-1)

i ₃ +i ₄ +q ₁=0  (7-2)

which is expressed by a new check matrix, having an additional column:

$\begin{matrix} \overset{i_{1\;}\mspace{20mu} i_{2}\mspace{31mu} i_{3}\mspace{31mu} i_{4}\mspace{31mu} i_{5}\mspace{20mu} i_{6}\mspace{25mu} i_{7}\mspace{14mu} i_{8}\mspace{25mu} p_{1}\mspace{20mu} p_{2}\mspace{20mu} p_{3\;}\mspace{14mu} p_{4}\mspace{20mu} p_{5\mspace{14mu}}\; p_{6\mspace{14mu}}\; p_{7\mspace{20mu}}p_{8}}{\begin{matrix} 1 & \; & \; & \; & \; & \; & 1 & \; & 1 & \; & \; & \; & \mspace{11mu} & \; & \; & \; & 1 \\ \; & 1 & \; & 1 & \; & 1 & \; & 1 & 1 & 1 & \; & \mspace{11mu} & \; & \; & \; & \; & \; \\ 1 & 1 & \; & \; & 1 & \; & \; & 1 & \; & 1 & 1 & \; & \; & \; & \; & \; & \; \\ \; & \; & 1 & \; & 1 & 1 & 1 & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; \\ \; & 1 & \; & \; & 1 & 1 & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; \\ 1 & 1 & \; & 1 & \; & \; & \; & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; \\ 1 & \; & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; & \; \\ \; & \; & 1 & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 \end{matrix}} & (8) \end{matrix}$

The first element of the column relating to q₁ expresses the first partial parity check defined in (7-1), the ninth element of this column expresses the second parity check defined in (7-2). The process can be continued with the second row, by moving for example three nonzero elements of this row corresponding to information bits i₂, i₆ and to parity bit p₁:

$\begin{matrix} \overset{i_{1\;}\mspace{20mu} i_{2}\mspace{31mu} i_{3}\mspace{31mu} i_{4}\mspace{31mu} i_{5}\mspace{20mu} i_{6}\mspace{25mu} i_{7}\mspace{14mu} i_{8}\mspace{25mu} p_{1}\mspace{20mu} p_{2}\mspace{20mu} p_{3\;}\mspace{14mu} p_{4}\mspace{20mu} p_{5\mspace{14mu}}\; p_{6\mspace{14mu}}\; p_{7\mspace{20mu}}p_{8}}{\begin{matrix} 1 & \; & \; & \; & \; & \; & 1 & \; & 1 & \; & \; & \; & \mspace{11mu} & \; & \; & \; & 1 \\ \; & \; & \; & 1 & \mspace{11mu} & \; & \; & 1 & \; & 1 & \; & \mspace{11mu} & \; & \; & \; & \; & \; \\ 1 & 1 & \; & \; & 1 & \; & \; & 1 & \; & 1 & 1 & \; & \; & \; & \; & \; & \; \\ \; & \; & 1 & \; & 1 & 1 & 1 & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; \\ \; & 1 & \; & \; & 1 & 1 & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; \\ 1 & 1 & \; & 1 & \; & \; & \; & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; \\ 1 & \; & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; & \; \\ \; & \; & 1 & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 \end{matrix}} & (9) \end{matrix}$

A check matrix augmented by one additional row is thus obtained:

$\begin{matrix} \overset{i_{1\;}\mspace{20mu} i_{2}\mspace{31mu} i_{3}\mspace{31mu} i_{4}\mspace{31mu} i_{5}\mspace{20mu} i_{6}\mspace{25mu} i_{7}\mspace{14mu} i_{8}\mspace{25mu} p_{1}\mspace{20mu} p_{2}\mspace{20mu} p_{3\;}\mspace{14mu} p_{4}\mspace{20mu} p_{5\mspace{14mu}}\; p_{6\mspace{14mu}}\; p_{7\mspace{20mu}}p_{8}}{\begin{matrix} 1 & \; & \; & \; & \; & \; & 1 & \; & 1 & \; & \; & \; & \mspace{11mu} & \; & \; & \; & 1 \\ \; & \; & \; & 1 & \mspace{11mu} & \; & \; & 1 & \; & 1 & \; & \mspace{11mu} & \; & \; & \; & \; & \; \\ 1 & 1 & \; & \; & 1 & \; & \; & 1 & \; & 1 & 1 & \; & \; & \; & \; & \; & \; \\ \; & \; & 1 & \; & 1 & 1 & 1 & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; \\ \; & 1 & \; & \; & 1 & 1 & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; \\ 1 & 1 & \; & 1 & \; & \; & \; & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; \\ 1 & \; & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; & \; \\ \; & \; & 1 & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 \\ \; & \; & \; & \; & \; & \; & \; & \mspace{11mu} & \; & \; & \; & \; & \; & \; & \; & \mspace{11mu} & \; \end{matrix}} & (10) \end{matrix}$

Parity check (3) can also be expressed in an equivalent manner in the form:

i ₄ +i ₈ +p ₂ =q ₂

i ₂ +i ₆ +p ₁ =q ₂  (11)

In other words, parity check (3) is now split into two “partial” parity checks:

i ₄ +i ₈ +p ₂ +q ₂=0  (12-1)

i ₂ +i ₆ +p ₁ +q ₂=0  (12-2)

where q₂ is a new parity bit. This is expressed by the addition of an additional column to the check matrix:

$\begin{matrix} \overset{i_{1\;}\mspace{25mu} i_{2}\mspace{34mu} i_{3}\mspace{34mu} i_{4}\mspace{31mu} i_{5}\mspace{20mu} i_{6}\mspace{25mu} i_{7}\mspace{14mu} i_{8}\mspace{25mu} p_{1}\mspace{20mu} p_{2}\mspace{20mu} p_{3\;}\mspace{14mu} p_{4}\mspace{14mu} p_{5\mspace{11mu}}\; p_{6\mspace{11mu}}\; p_{7\mspace{20mu}}p_{8}}{\begin{matrix} 1 & \; & \; & \; & \; & \; & 1 & \; & 1 & \; & \; & \; & \mspace{11mu} & \; & \; & \; & 1 & \; \\ \; & \; & \; & 1 & \mspace{11mu} & \; & \; & 1 & \; & 1 & \; & \mspace{11mu} & \; & \; & \; & \; & \; & 1 \\ 1 & 1 & \; & \; & 1 & \; & \; & 1 & \; & 1 & 1 & \; & \; & \; & \; & \; & \; & \; \\ \; & \; & 1 & \; & 1 & 1 & 1 & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; & \; \\ \; & 1 & \; & \; & 1 & 1 & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; \\ 1 & 1 & \; & 1 & \; & \; & \; & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \mspace{11mu} \\ 1 & \; & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; & \; & \; \\ \; & \; & 1 & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; \\ \; & \; & \; & \; & \; & \; & \; & \mspace{11mu} & \; & \; & \; & \; & \; & \; & \; & \mspace{11mu} & \; & 1 \end{matrix}} & (13) \end{matrix}$

where the second (resp. the tenth) element of the column relating to q₂ expresses the first (resp. the second) partial parity check defined in (12-1) (resp. in (12-2)).

The fractionating process can be pursued and additional parity bits q₃ through q₈ created. On completion of the process, a check matrix {tilde over (H)} is obtained:

$\begin{matrix} \overset{\begin{matrix} i_{1} & i_{2} & i_{3} & i_{4} & i_{5} & i_{6} & i_{7} & i_{8} & p_{1} & p_{2} & p_{3} & p_{4} & p_{5} & p_{6} & p_{7} & p_{8} \end{matrix}}{\begin{matrix} 1 & \; & \; & \; & \; & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; & \; & \; & \; & \; & \; \\ \; & \; & \; & 1 & \; & \; & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; & \; & \; & \; & \; \\ \; & 1 & \; & \; & \; & \; & \; & 1 & \; & \; & 1 & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; & \; & \; & \; \\ \; & \; & 1 & \; & \; & 1 & \; & \; & \; & \; & \; & 1 & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; & \; & \; \\ \; & \; & \; & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & 1 & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; & \; \\ \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; \\ 1 & \; & \; & \; & 1 & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; & \; & \; & \; & \; & \; & 1 & \; \\ \; & \; & 1 & \; & \; & 1 & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; & \; & \; & \; & \; & \; & 1 \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; & \; & \; & \mspace{11mu} & \; & \; \\ \; & \; & \; & \mspace{11mu} & \mspace{11mu} & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; & \mspace{11mu} & \; & \; & \; \\ \; & \; & \; & \; & \; & \mspace{11mu} & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; & \; & \; & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \mspace{11mu} & \; & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 \end{matrix}} & (14) \end{matrix}$

In the foregoing example, each parity check was split into two partial parity checks. As stated above, the fractionation can be of a higher degree. Thus the second row of matrix H can be split into three to give rise to three additional rows. For example, the matrix after the fractionation of the first line of (8) is considered and the nonzero elements of the second row corresponding to bits i₂ and p₁ are moved to a first additional row and those corresponding to bits i₆ and i₈ to a second additional row:

$\begin{matrix} \overset{i_{1\;}\mspace{20mu} i_{2}\mspace{31mu} i_{3}\mspace{31mu} i_{4}\mspace{31mu} i_{5}\mspace{20mu} i_{6}\mspace{25mu} i_{7}\mspace{14mu} i_{8}\mspace{25mu} p_{1}\mspace{20mu} p_{2}\mspace{20mu} p_{3\;}\mspace{14mu} p_{4}\mspace{20mu} p_{5\mspace{14mu}}\; p_{6\mspace{14mu}}\; p_{7\mspace{20mu}}p_{8}}{\begin{matrix} 1 & \; & \; & \; & \; & \; & 1 & \; & 1 & \; & \; & \; & \mspace{11mu} & \; & \; & \; & 1 \\ \; & \; & \; & 1 & \mspace{11mu} & \; & \; & \; & \; & 1 & \; & \mspace{11mu} & \; & \; & \; & \; & \; \\ 1 & 1 & \; & \; & 1 & \; & \; & 1 & \; & 1 & 1 & \; & \; & \; & \; & \; & \; \\ \; & \; & 1 & \; & 1 & 1 & 1 & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; \\ \; & 1 & \; & \; & 1 & 1 & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; \\ 1 & 1 & \; & 1 & \; & \; & \; & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; \\ 1 & \; & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; & \; \\ \; & \; & 1 & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 \end{matrix}} & (15) \end{matrix}$

a new matrix is obtained:

$\begin{matrix} \overset{i_{1\;}\mspace{20mu} i_{2}\mspace{31mu} i_{3}\mspace{31mu} i_{4}\mspace{31mu} i_{5}\mspace{20mu} i_{6}\mspace{25mu} i_{7}\mspace{14mu} i_{8}\mspace{25mu} p_{1}\mspace{20mu} p_{2}\mspace{20mu} p_{3\;}\mspace{14mu} p_{4}\mspace{20mu} p_{5\mspace{14mu}}\; p_{6\mspace{14mu}}\; p_{7\mspace{20mu}}p_{8}}{\begin{matrix} 1 & \; & \; & \; & \; & \; & 1 & \; & 1 & \; & \; & \; & \mspace{11mu} & \; & \; & \; & 1 \\ \; & \; & \; & 1 & \mspace{11mu} & \; & \; & \; & \; & 1 & \; & \mspace{11mu} & \; & \; & \; & \; & \; \\ 1 & 1 & \; & \; & 1 & \; & \; & 1 & \; & 1 & 1 & \; & \; & \; & \; & \; & \; \\ \; & \; & 1 & \; & 1 & 1 & 1 & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; \\ \; & 1 & \; & \; & 1 & 1 & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; \\ 1 & 1 & \; & 1 & \; & \; & \; & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; \\ 1 & \; & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; & \; \\ \; & \; & 1 & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; \\ \; & \; & \; & \; & \; & \; & \; & \mspace{11mu} & \; & \; & \; & \; & \; & \; & \; & \mspace{11mu} & \; \end{matrix}} & (16) \end{matrix}$

The parity check (3) can be equivalently expressed in the form of a system of equations:

i ₄ +p ₂ =q ₂

i ₂ +p ₁ =q ₃

i ₆ +i ₈ +q ₂ +q ₃=0  (17)

in other words, in the form of three partial parity checks:

i ₄ +p ₂ +q ₂=0

i ₂ +p ₁ +q ₃=0

i ₆ +i ₈ +q ₂ +q ₃=0  (18)

by introducing the two new parity bits q₂ and q₃. The check matrix then has two additional columns, as shown hereafter:

$\begin{matrix} \overset{i_{1\;}\mspace{20mu} i_{2}\mspace{31mu} i_{3}\mspace{31mu} i_{4}\mspace{31mu} i_{5}\mspace{20mu} i_{6}\mspace{25mu} i_{7}\mspace{14mu} i_{8}\mspace{25mu} p_{1}\mspace{20mu} p_{2}\mspace{20mu} p_{3\;}\mspace{14mu} p_{4}\mspace{20mu} p_{5\mspace{14mu}}\; p_{6\mspace{14mu}}\; p_{7\mspace{20mu}}p_{8}}{\begin{matrix} 1 & \; & \; & \; & \; & \; & 1 & \; & 1 & \; & \; & \; & \mspace{11mu} & \; & \; & \; & 1 & \; & \; \\ \; & \; & \; & 1 & \mspace{11mu} & \; & \; & \; & \; & 1 & \; & \mspace{11mu} & \; & \; & \; & \; & \; & 1 & \; \\ 1 & 1 & \; & \; & 1 & \; & \; & 1 & \; & 1 & 1 & \; & \; & \; & \; & \; & \; & \; & \; \\ \; & \; & 1 & \; & 1 & 1 & 1 & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; & \; & \; \\ \; & 1 & \; & \; & 1 & 1 & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; & \; \\ 1 & 1 & \; & 1 & \; & \; & \; & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; \\ 1 & \; & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; \\ \; & \; & 1 & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; & \; & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 \\ \; & \; & \; & \; & \; & \; & \; & \mspace{11mu} & \; & \; & \; & \; & \; & \; & \; & \mspace{11mu} & \; & 1 & 1 \end{matrix}} & (19) \end{matrix}$

It will be understood that different parity checks can be split into different numbers of partial checks. For example, the more nonzero elements a row has, the more finely it can be fragmented. Lines having a small number of nonzero elements can thus be obtained.

Conversely, it is always possible, if necessary, to add nonzero elements to the check matrix. For example, if the third row of H is split by moving the nonzero elements corresponding to bits i₁ and i₈ to a first additional row and the nonzero elements corresponding to bits i₅ and p₂ to a second additional row:

$\begin{matrix} \overset{i_{1\;}\mspace{20mu} i_{2}\mspace{31mu} i_{3}\mspace{31mu} i_{4}\mspace{31mu} i_{5}\mspace{20mu} i_{6}\mspace{25mu} i_{7}\mspace{14mu} i_{8}\mspace{25mu} p_{1}\mspace{20mu} p_{2}\mspace{20mu} p_{3\;}\mspace{14mu} p_{4}\mspace{20mu} p_{5\mspace{14mu}}\; p_{6\mspace{14mu}}\; p_{7\mspace{20mu}}p_{8}}{\begin{matrix} 1 & \; & \; & \; & \; & \; & 1 & \; & 1 & \; & \; & \; & \mspace{11mu} & \; & \; & \; & 1 & \; & \; & \; \\ \; & \; & \; & 1 & \mspace{11mu} & \; & \; & \; & \; & 1 & \; & \mspace{11mu} & \; & \; & \; & \; & \; & 1 & \; & \; \\ \; & 1 & \mspace{11mu} & \; & \; & \; & \; & \; & \; & \mspace{11mu} & 1 & \; & \; & \; & \; & \; & \; & \; & \; & \; \\ \; & \; & 1 & \; & 1 & 1 & 1 & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; & \; & \; & \; \\ \; & 1 & \; & \; & 1 & 1 & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; & \; & \; \\ 1 & 1 & \; & 1 & \; & \; & \; & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; & \; \\ 1 & \; & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; \\ \; & \; & 1 & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; \\ \; & \; & \; & \; & \; & \; & \; & \mspace{11mu} & \; & \; & \; & \; & \; & \; & \; & \mspace{11mu} & \; & 1 & 1 & \; \end{matrix}} & (20) \end{matrix}$

the new matrix:

$\begin{matrix} \overset{\begin{matrix} i_{1} & i_{2} & i_{3} & i_{4} & i_{5} & i_{6} & i_{7} & i_{8} & p_{1} & p_{2} & p_{3} & p_{4} & p_{5} & p_{6} & p_{7} & p_{8} \end{matrix}}{\begin{matrix} 1 & \; & \; & \; & \; & \; & 1 & \; & 1 & \; & \; & \; & \mspace{11mu} & \; & \; & \; & 1 & \; & \; & \; \\ \; & \; & \; & 1 & \mspace{11mu} & \; & \; & \; & \; & 1 & \; & \mspace{11mu} & \; & \; & \; & \; & \; & 1 & \; & \; \\ \; & 1 & \mspace{11mu} & \; & \; & \; & \; & \; & \; & \mspace{11mu} & 1 & \; & \; & \; & \; & \; & \; & \; & \; & \; \\ \; & \; & 1 & \; & 1 & 1 & 1 & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; & \; & \; & \; \\ \; & 1 & \; & \; & 1 & 1 & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; & \; & \; \\ 1 & 1 & \; & 1 & \; & \; & \; & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; & \; \\ 1 & \; & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; \\ \; & \; & 1 & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; \\ \; & \; & \; & \; & \; & \; & \; & \mspace{11mu} & \; & \; & \; & \; & \; & \; & \; & \mspace{11mu} & \; & 1 & 1 & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; \end{matrix}} & (21) \end{matrix}$

is obtained.

The parity check corresponding to the third row of matrix H can be expressed in the following manner:

i ₁ +i ₂ +i ₅ +i ₈ +p ₂ +p ₃=0  (22)

A variable can be inserted into constraint (22), for example the systematic information bit i₃:

(i ₂ +p ₃ +i ₃)+(i ₁ +i ₈ i ₃)+(i ₅ +p ₂)=0  (23)

thus, by introducing new parity bits q₄=i₂+p₃+i₃ and q₅=i₁+i₈+i₃:

i ₂ +p ₃ +i ₃ +q ₄=0  (24-1)

i ₁ +i ₈ +i ₃ +q ₅=0  (24-2)

i ₅ +p ₂ +q ₄ +q ₅=0  (24-3)

It is noted that bit i₃ appears in the partial check (24-1) and that, correlatively, it also appears in the partial check (24-2). Check matrix H thus includes two additional columns respectively associated with q₄ and q₅. Unlike the preceding rows, a nonzero element has been introduced (here in the third and the twelfth rows of the matrix):

$\begin{matrix} \overset{\mspace{14mu} {i_{1}{\mspace{14mu} \; \mspace{11mu}}i_{2}\mspace{31mu} i_{3\;}\mspace{25mu} i_{4}\mspace{25mu} i_{5}\mspace{25mu} i_{6}\mspace{25mu} i_{7}\mspace{25mu} i_{8\mspace{20mu}}p_{1\mspace{31mu}}p_{2\mspace{20mu}}p_{3\mspace{25mu}}p_{4\mspace{20mu}}p_{5}\mspace{20mu} p_{6\mspace{20mu}}p_{7\mspace{20mu}}p_{8}}}{\begin{matrix} 1 & \; & \; & \; & \; & \; & 1 & \; & 1 & \; & \; & \; & \mspace{11mu} & \; & \; & \; & 1 & \; & \; & \; & \; \\ \; & \; & \; & 1 & \mspace{11mu} & \; & \; & \; & \; & 1 & \; & \mspace{11mu} & \; & \; & \; & \; & \; & 1 & \; & \; & \; \\ \; & 1 & {\; 1\;} & \; & \; & \; & \; & \; & \; & \mspace{11mu} & 1 & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; \\ \; & \; & 1 & \; & 1 & 1 & 1 & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; & \; & \; & \; & \; \\ \; & 1 & \; & \; & 1 & 1 & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; & \; & \; & \; \\ 1 & 1 & \; & 1 & \; & \; & \; & 1 & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; & \; & \; \\ 1 & \; & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; & \; \\ \; & \; & 1 & 1 & \; & 1 & \; & 1 & \; & \; & \; & \; & \; & \; & 1 & 1 & \; & \; & \; & \; & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; & \; & \; \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & \; & \; \\ \; & \; & \; & \; & \; & \; & \; & \mspace{11mu} & \; & \; & \; & \; & \; & \; & \; & \mspace{11mu} & \; & 1 & 1 & \; & \; \\ \; & \; & 1 & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & {1\;} \\ \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & \; & 1 & {1\;} \end{matrix}} & (25) \end{matrix}$

In what follows, we will describe the general case of a coding method with incremental redundancy using a code whose check matrix is obtained by fractionation of the check matrix H of an LDPC code, C. This code is not necessarily binary, and consequently the elements of H can be elements of a Galois field with q elements, GF(q) or, more generally, elements of a group acting on the code's non-binary alphabet. The LDPC code is also not necessarily systematic, in other words the variables are not necessarily the information symbols themselves but more generally linear combinations of them (given by the code's generating matrix (G). It will be noted that when the code is not systematic, the parity matrix H is not divided into a first part relating to the information symbols and a second part relating to the parity symbols, as in the foregoing example.

Matrix H is supposed to be of size M×N. Let there be a matrix {tilde over (H)} of size {tilde over (M)}×Ñ with {tilde over (M)}≧M and Ñ≧N. It can be said that rows L_(i) ₁ , L_(i) ₂ , . . . , L_(i) _(k) of {tilde over (H)} are obtained by fractionation of a row R_(j) of H if there exists a subset E⊂[1:Ñ]≡{1, . . . , Ñ}, with cardinal N, such that:

L _(i) ₁ ⊕L _(i) ₂ ⊕ . . . ⊕L _(i) _(k) |_(E) =R _(j)  (26)

and

L _(i) ₁ ⊕L _(i) ₂ ⊕ . . . L _(i) _(k) |_([1:Ñ]\E)=0  (27)

where for all vectors V=(ν₁, . . . , ν_(Ñ)) of size Ñ, we denote with V|_(E) the vector of the N components of V whose indices are included in E and with V|_([1: Ñ]\E) the vector of the Ñ−N remaining components. The addition operation of the group acting on the code's non-binary alphabet has been denoted with ⊕, for example addition within the Galois field GF(q). It is recalled that this addition is nothing but the XOR (OR exclusive) operation in the binary case (q=2).

In what follows, we will refer to a fractionation operation as defined in (26) and (27), including one in which a new variable is inserted later as explained in connection with (25).

When conditions (26) and (27) are satisfied, it is also said that rows L_(i) ₁ , L_(i) ₂ , . . . L_(i) _(k) are obtained by a “k-fractionation” of row R_(j), k being an integer strictly greater than 1 indicating the degree of fractionation.

Finally, it will be said that matrix {tilde over (H)} is obtained by fractionation of matrix H, if there exists:

-   -   a partition of the set of {tilde over (M)} rows of matrix {tilde         over (H)} into M disjoint subsets {L_(k) ₀ , . . . , L_(k) ₁ },         {L_(k) ₁ ₊₁, . . . , L_(k) ₂ }, . . . , {L_(k) _(M−1) ₊₁, . . .         , L_(k) _(M) } with k₀=1 and k_(M)={tilde over (M)};     -   and a subset E⊂[1:Ñ] with cardinal N;         such that ∀m ε{1, . . . , M}:

L _(k) _(m−1) ₊₁ ⊕L _(k) _(m−1) ₊₂ ⊕ . . . L _(k) _(m) |_(E) =R _(m)  (28)

and

L _(k) _(m−1) ₊₁ ⊕L _(k) _(m−1) ₊₂ ⊕ . . . L _(k) _(m) |_([1:Ñ]\E)=0  (29)

where R_(m) represents the m-th row of H. Thus, it is understood that a plurality of new rows L_(k) _(m−1) ₊₁, . . . , L_(k) _(m) has been substituted for row R_(m) of H.

It is noted that rows R_(m) are not necessarily arranged consecutively. Similarly, {L₁, . . . , L_(k) ₁ } represents any k₁ distinct rows of matrix {tilde over (H)}, which are not necessarily consecutive. The same is true of {L_(k) ₁ ₊₁, . . . , L_(k) ₂ }, etc.

E represents the set of columns of {tilde over (H)} already present in matrix H. The set E is consequently the set of columns corresponding to the primary variables (to the bits of original code C in the case of a binary code) or even, by stretching terminology, the set of primary variables. Similarly, [1:Ñ]\E is the set of additional variables introduced by the fractionation process. Each additional column added to matrix H corresponds to an additional variable, that is to an additional symbol not belonging to code C.

Code {tilde over (C)} defined by parity matrix {tilde over (H)} is an extension of C in the sense that if X=(X₁, . . . X_(Ñ)) is the word in code {tilde over (C)} then X|_(E) is a word in code C. In other words, if {tilde over (H)}X^(T)=0 then HX|_(E)=0.

As an illustration, the parity matrix H of a code is shown in FIG. 5A, and the matrix {tilde over (H)} obtained by fractionation of that matrix in FIG. 5B. It is noted here that:

-   -   rows L₁ and L₂ of {tilde over (H)} are obtained by a         2-fractionation of row R₁ of H;     -   rows L₃, L₄ and L₅ of {tilde over (H)} are obtained by a         3-fractionation of row R₂ of     -   rows L₆, L₇ and L₈ of {tilde over (H)} are obtained by a         3-fractionation of row R₃ of H;     -   rows L₉, L₁₀, L₁₁ and L₁₂ of {tilde over (H)} are obtained by a         4-fractionation of row R₄ of H.

It is also noted that the density of nonzero elements of matrix {tilde over (H)} is noticeably lower than that of matrix the bits in one row of H representing a parity check are now distributed over several rows.

More generally, and unlike the state of the art, check matrix {tilde over (H)} does not contain the matrix H of the original code. The fractionation process makes it possible to reduce the density of nonzero elements in the check matrix while at the same time increasing the redundancy of the code. The fractionation process also makes it possible to break any cycles that might be present in matrix H. Consequently, code C defined by check matrix H has high correction capacity, associated with rapid convergence of the decoding process.

FIG. 6 shows schematically a coding method with incremental redundancy according to one embodiment of the invention.

This coding method uses an LDPC type code C, defined by its check matrix H, or dually by its generating matrix G. It is known that the relation HG^(T)=0 connects one with the other. In the particular case where C is a systematic code, we have G=(I_(K)|P) where K is the dimension of the code (number of information bits), I_(K) the unit matrix of size K×K and P is a parity bit matrix of size K×(N−K) where N is the length of the code. The check matrix can be written in the form H=(−P^(T)|I_(N−K)), or in the case of a binary code H=(P^(T)|I_(N−K)) where I_(N−K) is the unit matrix of size (N−K)×(N−K).

At step 610, a sequence of information symbols to be encoded, I, is available, represented in vector form.

At stage 620, it is determined whether the coding is carried out using the initial code C or using a code {tilde over (C)} with a lower efficiency (or throughput) than C.

If encoding using C is satisfactory, the code word X=IG is supplied at 625. In the systematic case X=(I,P) where P=IP is the parity sequence.

In the opposite case, at stage 630, a check matrix {tilde over (H)} is calculated by fractionation of matrix H as seen earlier. Different variations can be contemplated, according to whether all the rows of the matrix are fractionated or only some of them are, or whether or not the degree of fractionation differs from one row to another. The number of fractionated rows can depend on the state of the communication channel over which the information symbols are to be transmitted. Alternatively or cumulatively, the degree of fractionation of these rows can also depend on the state of the channel in question.

At step 640, the sequence of information symbols is encoded using code C defined by matrix {tilde over (H)}. For this purpose, the code word {tilde over (X)} of {tilde over (C)} whose restriction to E is equal to X can be determined. Recall that E is the set of columns of {tilde over (H)} present in H, in other words the vector {tilde over (X)} is determined such that:

{tilde over (H)}{tilde over (X)}=0 and {tilde over (X)}| _(E) =X  (30)

An increment of redundancy is then provided in 650 in the form of a sequence of additional symbols {tilde over (X)}_(n), nε[1:Ñ]\E. Alternatively, all the symbols making up {tilde over (X)} can be supplied at 650.

The process can be iterated in the sense that if encoding using {tilde over (C)} proves insufficient, the fractionation of matrix H can be continued, either by fractionating rows not yet fractionated, or by increasing the degree of fractionation of rows already fractionated.

Fractionation can be advantageously continued starting with {tilde over (H)}. Codes {tilde over (C)}₁, {tilde over (C)}₂, . . . will thus be obtained, having ever greater redundancy, and therefore ever decreasing efficiency.

The incremental redundancy coding method can be implemented by a computer, and more generally by calculation means, distributed or not.

It is important to note that the calculation of matrix {tilde over (H)} from H can be carried out dynamically by the coder as described previously, or it can have been carried out previously. In the second case in particular, the matrices H and {tilde over (H)} may be stored in coder memory.

The incremental redundancy coding method can be applied to many telecommunication and other systems.

First of all, it can be implemented within the scope of a link adaptation telecommunication system. As is known, link adaptation is carried out by selecting a modulation and coding scheme or MCS to transmit data over the link. The destination terminal returns channel state information or CSI to the source terminal, expressed in terms of (a) communication channel attenuation coefficient(s), of signal-to-noise ratio or SNR, of bit-error rate or BER, of packet error rate or PER, etc. The source terminal selects for the next transmission the MCS scheme corresponding to the state of the channel. An MCS scheme is an ordered pair (σ,μ) made up of a σ and a modulation alphabet μ. Within the scope of a link adaptation transmission method according to one embodiment of the invention, the code σ can be selected from among a plurality of codes C, {tilde over (C)}₁, {tilde over (C)}₂, . . . where C is an LDPC code and {tilde over (C)}₁, {tilde over (C)}₂ are codes with increasing redundancy, obtained by successive fractionations of C.

The incremental redundancy coding method disclosed previously can also be applied to a turbo-coding system, as shown in FIG. 7.

The turbo-coder 700 in FIG. 7 includes a branch 710 directly transmitting the information bits I, a first coder, 720, encoding the information bits I using a systematic LDPC code, C, and supplying only the parity bits P, a second coder, 730, receiving the information bits after interleaving by the interleaver 725 and using a code {tilde over (C)} obtained by fractionation of the check matrix H of code C as previously explained. The second coder provides the parity bits {tilde over (P)} of code {tilde over (C)} and the encoded packet (I,P, {tilde over (P)}) is transmitted over the communication channel. The degree of fractionation of code {tilde over (C)} can be adaptively adjusted according to the state of the channel so that the encoded packet has a level of redundancy that varies incrementally.

The incremental redundancy coding method previously disclosed can also be exploited for transmitting within a cooperative network, as shown in FIG. 8.

In this network, the source terminal s encodes at 810 a packet of information bits, I, using an LDPC code, C, with check matrix H. It thus generates a code word X and transmits it to the relay terminal r as well as to the destination terminal d.

The relay r decodes the received data at 820 using matrix H correcting any transmission errors that occur. It then generates at 821 a code word {tilde over (X)} such that {tilde over (H)}{tilde over (X)}=0 and {tilde over (X)}|_(E)=X where {tilde over (H)} is the check matrix obtained by fractionation of H. The additional bits {tilde over (X)}_(n), nε[1:Ñ]\E (where E is the set of columns of {tilde over (H)} present in H) are then transmitted at 822 to the destination terminal.

The destination terminal d receives packet X from the source terminal and packet {tilde over (X)}|[1:Ñ]\E from the relay terminal. The destination terminal therefore possesses (because X={tilde over (X)}|_(E)) the full code word {tilde over (X)} and can decode it at 830 using check matrix {tilde over (H)}.

In the general case, the coding method can use a matrix H made up of elements of GF (q). It applies equally whether code C is systematic or not.

Different embodiment variations of cooperative transmission can be contemplated.

First of all, the relay terminal r can transmit the full code word {tilde over (X)} instead of confining itself to sending the additional bits. The destination terminal then receives X={tilde over (X)}|_(E) through two different channels, which makes it possible to improve the reliability of these bits.

Alternatively, the relay terminal r can transmit, in addition to the additional bits {tilde over (X)}_(n), nε[1:Ñ]\E, the information I that it decoded locally. The destination terminal then receives the code word {tilde over (X)} as well as the systematic information I. This variation allows an increase in the signal-to-noise ratio for the information bits I, thereby improving the reliability of those bits.

Finally, if a plurality of relay terminals r_(l), . . . , r_(L) is available to cooperate with the source terminal, each relay terminal r_(l) can take charge of transmitting a subset Λ_(l) of the additional bits {tilde over (X)}_(n), nε[1:Ñ]\E such that:

$\begin{matrix} {{\left\lbrack {1:\overset{\sim}{N}} \right\rbrack \backslash E} = {\overset{L}{\bigcup\limits_{ = 1}}\Lambda_{}}} & (31) \end{matrix}$

The destination terminal receiving the primary bits from the source terminal and the additional bits from the set of relay terminals can reconstitute the code word {tilde over (X)} and decode it using check matrix {tilde over (H)}.

Alternatively, as before, each relay terminal r_(l), l=1, . . . , L, can transmit, in addition to its part Λ_(l) of the additional bits, the information I which it will have decoded locally. The signal-to-noise ratio is thus significantly increased for the information bits/and the reliability of those bits is therefore increased.

In applying the coding method according to the invention to a cooperative network, it has been assumed that the code {tilde over (C)} was defined by a predetermined fractionation of the matrix H. This fractionation, however, can be adaptive, and vary for example according to the state of the channel between the relay terminal r and the destination terminal d and/or the state of the channel between the source terminal s and the destination terminal d. More precisely, the relay can increase the degree of redundancy of code {tilde over (C)} by further fractionating the matrix H if the state of the r-d channel and/or the s-d channel deteriorates. Control of fractionation can be carried out at the initiative of the relay terminal or under the control of the source terminal.

When several relay terminals r_(l), . . . , r_(L) are cooperatively involved in the transmission, each relay terminal r_(l) can be dynamically assigned a subset Λ_(l) of greater or lesser size depending on the quality of the r_(l)-d channel. Further, it is also possible to vary the degree of redundancy of code {tilde over (C)}, by fractionating more or less the check matrix {tilde over (H)}, to provide for the overall quality of the relay channel. Control of fractionation, as well as of the sharing of the subsets Λ_(l) is advantageously carried out centrally by the source terminal.

Finally, the incremental redundancy coding method according to the invention can be used in an IR-HARQ transmission system. A source terminal in such a system transmits, first, a packet of information bits I, encoding it using an LDPC, C, with check matrix H. In other words the source terminal transmits a code word X representing packet I. If the destination terminal is able to decode packet X, correcting if necessary any transmission errors using check matrix H, the source terminal continues transmission with the next information packet. On the other hand, if the packet cannot be decoded, the destination terminal will request a retransmission from the source terminal. It then proceeds with a second encoding of packet/using a code {tilde over (C)} with check matrix {tilde over (H)} obtained by fractionation of H as explained above and transmits only the additional bits {tilde over (X)}_(n), nε[1:Ñ]\E, where E is the set of columns of {tilde over (H)} already present in H. If the decoder is still unable to decode the packet successfully, the incremental coding process can be iterated. In other words, the source terminal can encode the packet using codes {tilde over (C)}₁, {tilde over (C)}₂, . . . with increasing redundancy, obtained by successive fractionations of the parity matrix of C. More specifically, matrix {tilde over (H)} itself can be fractionated to supply a new check matrix {tilde over (H)}₁ defining a new code {tilde over (C)}₁. Once again, only the additional bits {tilde over (X)}_(n), nε[1:Ñ₁]−E₁ where E₁ is the set of columns of {tilde over (H)}₁ already present in {tilde over (H)}, are transmitted by the source terminal.

In the examples of application of the invention previously described, the matrix {tilde over (H)} can either be dynamically calculated from the matrix H or have been previously calculated. In the second case in particular, the matrices H and {tilde over (H)} can be stored in memory. 

1. A turbo-coding method for a packet of information symbols (I) in which, in a first branch of said turbo-code, said packet is supplied in systematic form, said packet being encoded using a first systematic code (C), of the LDPC type, defined by a first check matrix H, the parity symbols in the packet thus encoded being provided in a second branch of the turbo-code, said packet being encoded, after interleaving, using a second code ({tilde over (C)}), defined by a second check matrix {tilde over (H)}, the parity symbols of the packet thus encoded being supplied in a third branch of the turbo-code, wherein said second check matrix is obtained by fractionating at least one parity check represented by a row of matrix H into a plurality of partial parity checks applying to the symbols of the first code and at least one additional symbol, by adding to this matrix at least one new column representing said additional symbol and by substituting for said row new rows respectively representing these partial parity checks.
 2. A method for transmitting packets within a communication network of the cooperative type including a source terminal, a destination terminal and at least one relay terminal, characterised in that: the source terminal encodes a packet of information symbols, I, using a first code, C, of the LDPC type and with check matrix H, and transmits the packet thus encoded to the relay terminal as well as to the destination terminal; the relay terminal decodes the received data to recover said packet and encodes the recovered packet using a second code defined by a check matrix {tilde over (H)}, said matrix {tilde over (H)} being obtained by fractionating at least one parity check represented by a line in matrix H into a plurality of partial parity checks applying to symbols of the first code and at least one additional symbol, by adding to this matrix at least one column representing said additional symbol and by substituting for said row new rows respectively representing these partial parity checks; the relay terminal transmits to the destination terminal at least the additional symbols corresponding to the columns of the second check matrix which are not present in the first check matrix.
 3. A method of transmission according to claim 2, characterised in that the relay terminal transmits all the symbols of the packet encoded with the second code.
 4. A transmission method according to claim 2 or 3, characterised in that the relay terminal also transmits said recovered packet to the destination terminal.
 5. A transmission method according to one of claims 2 through 4, characterised in that the number of fractionated rows and/or their degree of fractionation is/are dependent on the state of the communication channel between the relay terminal and the destination terminal and/or the state of the communication channel between the source and the destination.
 6. A method for transmitting packets within a cooperative type communication network including a source terminal, a destination terminal and a plurality of relay terminals, characterised in that: the source terminal encodes a packet of information symbols, I, using a first code, C, of the LDPC type and with check matrix H, and transmits the packet thus encoded to the relay terminals as well as to the destination terminal; each relay terminal decodes the received data to recover said packet and encodes the recovered packet using a second code defined by a check matrix {tilde over (H)}, said matrix {tilde over (H)} being obtained from H by fractionating at least one parity check represented by a row of matrix H into a plurality of partial parity checks applying to symbols of the first code and a set of additional symbols, by adding to matrix H a plurality of columns representing this set of additional symbols and by substituting for said row new rows respectively representing these partial parity checks; each relay terminal transmits to the destination terminal a subset of the additional symbols corresponding to the columns of the second check matrix which are not present in the first check matrix, the subsets of two distinct relays being disjoint.
 7. A packet transmission method according to claim 6, characterised in that the sizes of the various subsets are determined centrally by the source terminal.
 8. A packet transmission method according to claim 6 or 7, characterised in that the recombination of said subsets constitutes said set of additional symbols and the size of said set is determined by the source terminal. 